import axios from "axios";
import store from "@/store";
import {refreshToken} from "@/api/login/user";

// debugger
const request = axios.create({
    baseURL: '/'
})
//请求拦截器,所有请求添加header中加token,每个请求都会执行
request.interceptors.request.use(function (config) {
    console.log(config);
    // config.headers.Authorization = store.state?.tokenInfo;
    config.headers.token = store.state?.tokenInfo;
    return config
})


/**
 * 暂时使用到双向令牌
 * access_token 错误 or 为空，会报401，这里不作区分，一律刷新 token.如果 tokenInfo 为空，即tokenInfo.token_refresh 为空,那么 刷新 token 也会失败，那个时候再跳转到登录,
 */
//添加响应拦截器
request.interceptors.response.use(function (response) {
        //响应为成功状态,执行这里
        return response;
    }, function (error) {
        console.log(error);
        //访问接口500,直接到登录界面
        if (error.response.status === 500) {
            localStorage.setItem('tokenInfo', '')
        }
        // debugger
        //响应为失败状态,执行这里
        //token失败状态,这里同一时刻刷新多次token
        // if (error.response.status === 401) {
        //     return refreshToken().then(() => {
        //         //重新发送原始请求,config包含之前的配置
        //         return request(error.config)
        //     })
        // }
      else {
            //如果不是token相关的错误,而是其他错误,就不处理,往下传递
            return Promise.reject(error)
        }
    }
)

export default request
